Computers and the applications that run on them continue to get more sophisticated. Similarly, databases and the applications that interact with them continue to get more sophisticated. Thus, diagnosing actual and/or potential problems continues to grow in difficulty. Conventionally users have had limited tools to help them probe and diagnose their systems. Thus, users may have had to manually select tests to run, manually configure inputs for the tests, manually initiate the tests, and perform other manual tasks. Users may then have had to repeat the selection, configuration, and initiation all over again when they wanted to repeat the testing. These processes may have involved searching manuals, searching on a local system for vendor provided test programs, searching the Internet for available diagnostics, making phone calls, manually configuring tests, manually running tests, and so on.
While some manufacturers may provide a test program or even a suite of test programs, these tend to be static programs that may get out of date and/or become obsolete. Furthermore, these test programs still tend to require unacceptable levels of user configuration and/or control. Some manufacturers may provide diagnostic tests that can be downloaded and run by a user. Some tests may even execute automatically after being downloaded into, for example, a browser. However, repeatability may be difficult, if possible at all, to achieve.
Manufacturers or other third parties may also provide online assistance where a support person will “take over” a remote computer to try to diagnose a problem. This remote control usually relies on analyzing information available on the implicated computer. This remote control may sometimes involve running a diagnostic program on the implicated computer. As a result of the remote control, the support person and/or the user of the implicated computer may decide to download a patch (e.g., executable) to fix the problem(s). Even in this paradigm, finding and providing inputs to diagnostics may be a timely, difficult, and non-repeatable process that unnecessarily burdens the user for whom the diagnostics are being performed.
While these approaches have provided some relief to users, they have not provided a comprehensive, integrated, pluggable diagnostic solution. Diagnostics provided from different sources tend not to work together and thus individual items may be tested in isolation. Furthermore, these approaches tend to be “one shot” after the fact attempts at diagnosing and/or repairing problems. Additionally, these approaches tend to require sophisticated actions from a user who may have neither the experience to understand such actions nor the time to acquire such experience.